package com.system.base;

import com.fasterxml.jackson.annotation.JsonPropertyOrder;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 返回值
 * 
 * @author kaifa015
 *
 * @param <E>
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@JsonPropertyOrder({ "code", "message", "data" })
public class ApiResult<E> {

	/**
	 * 状态码
	 */
	private Integer code;

	/**
	 * 提示语
	 */
	private String message;

	/**
	 * 数据
	 */
	private E data;

	/**
	 * 默认code:200
	 * @param <E>
	 * @return
	 */
	/**
	 * 
	 * @param <E>
	 * @param message：提示语
	 * @return
	 */
	public static <E> ApiResult<E> ok(String message) {
		return ok(message, null);
	}

	/**
	 * 默认code:200
	 * @param <E>
	 * @param message：提示语
	 * @param data：返回数据
	 * @return
	 */
	public static <E> ApiResult<E> ok(String message, E data) {
		return build(200, message, data);
	}

	/**
	 * 静态方法，方便赋值
	 * @param <E>
	 * @param code：状态码
	 * @param message:提示语
	 * @return
	 */
	public static <E> ApiResult<E> build(Integer code, String message) {
		return build(code, message, null);
	}

	/**
	 * 静态方法，方便赋值
	 * @param <E>
	 * @param code：状态码
	 * @param message:提示语
	 * @param data：返回数据
	 * @return
	 */
	public static <E> ApiResult<E> build(Integer code, String message, E data) {
		return new ApiResult<>(code, message, data);
	}
	

}
